//package com.example.demo.config;
//
//import com.example.demo.entity.ThreadPoolProperties;
//import org.springframework.context.annotation.Bean;
//import org.springframework.context.annotation.Configuration;
//import org.springframework.scheduling.annotation.EnableAsync;
//import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor;
//
//import javax.annotation.Resource;
//import java.util.concurrent.Executor;
//import java.util.concurrent.ThreadPoolExecutor;
//
////开启异步
//@EnableAsync
////配置类
//@Configuration
//public class ThreadPoolConfig {
//    @Resource
//    private ThreadPoolProperties threadPoolProperties;
//
//    //bean名称
//    @Bean("taskExecutor")
//    public Executor taskExecutor() {
//        ThreadPoolTaskExecutor executor = new ThreadPoolTaskExecutor();
//        executor.setCorePoolSize(threadPoolProperties.getCorePoolSize());
//        executor.setMaxPoolSize(threadPoolProperties.getMaxPoolSize());
//        executor.setQueueCapacity(threadPoolProperties.getQueueCapacity());
//        executor.setKeepAliveSeconds(threadPoolProperties.getKeppAliveSeconds());
//        executor.setThreadNamePrefix(threadPoolProperties.getPrefixName());
//        //设置线程池关闭的时候 等待所有的任务完成后再继续销毁其他的bean
//        executor.setWaitForTasksToCompleteOnShutdown(true);
//        //策略
//        executor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy());
//        return executor;
//    }
//}
//
//
